#include "temps.h"

/* *********************************************************************
   Fonction de la structure Temps                               
   ********************************************************************* */
Temps * creer_Tem()
{
  Temps * temps = (Temps *) malloc (1 * sizeof(Temps));
  if(temps == NULL)
    {
      fprintf(stderr, "Mémoire insuffisante");
      exit(EXIT_FAILURE);
    }
  init_Tem(temps);
  return temps;
}

void init_Tem(Temps *temps)
{
  if(temps)
    {
      temps->id = 0;
      temps->heure = 0;
      temps->minute = 0;
      temps->seconde = 0;
      temps->maj = 0;
      temps->sup = 0;
    }
}

void liberer_Tem(Temps *temps)
{
  if(temps)
    {
      temps->id = 0;
      temps->heure = 0;
      temps->minute = 0;
      temps->seconde = 0;
    }
}

void detruire_Tem(Temps **temps)
{
  if(temps && (*temps))
    {
      liberer_Tem((*temps));
      free((*temps));
      (*temps) = NULL;
    }
}

void copier_Tem(Temps ** tempsDest, const Temps * tempsSrc)
{
  if((*tempsDest) == NULL) 
    {
      (*tempsDest) = creer_Tem();
    }
  if(tempsSrc)
    {
      setId_Tem((*tempsDest), getId_Tem(tempsSrc));
      setHeure_Tem((*tempsDest), getHeure_Tem(tempsSrc));
      setMinute_Tem((*tempsDest), getMinute_Tem(tempsSrc));
      setSeconde_Tem((*tempsDest), getSeconde_Tem(tempsSrc));
      setMaj_Tem((*tempsDest), getMaj_Tem(tempsSrc));
      setSup_Tem((*tempsDest), getSup_Tem(tempsSrc));
    }
  else
    detruire_Tem(tempsDest);
}


/* *********************************************************************                                                       
   Accesseurs et Mutateurs de la structure Date                                                                              
   ********************************************************************* */

unsigned char getId_Tem(const Temps *temps)
{
  if(temps)
    return temps->id;
  return 0;
}
void setId_Tem(Temps *temps, const unsigned char id)
{
  if(temps)
    {
      temps->id = id;
    }
}

unsigned char getHeure_Tem(const Temps *temps)
{
  if(temps)
    return temps->heure;
  return 0;
}
void setHeure_Tem(Temps *temps, const unsigned char heure)
{
  if(temps)
    {
	if(heure <= 24)
	  temps->heure = heure;
    }
}
unsigned char getMinute_Tem(const Temps *temps)
{
  if(temps)
    return temps->minute;
  return 0;
}


void setMinute_Tem(Temps *temps, const unsigned char minute) 
{
  if(temps)
    {
	if(minute <= 59)
	  temps->minute = minute;
    }
}

unsigned char getSeconde_Tem(const Temps *temps)
{
  if(temps)
    return temps->seconde;
  return 0;
} 


void setSeconde_Tem(Temps *temps, const unsigned char seconde) 
{
  if(temps)
    {
      if(seconde == 0 && seconde <= 60)
	temps->seconde = seconde;
    }
}
char * print_Tem(Temps *temps)
{
  return 0x0	;
  (void) temps;
}

int getTemps_Tem(Temps *temps)
{
  if(temps)
    return temps->heure + temps->minute % 60;
  return 0;
}

void setTemps_Tem(Temps *temps, const int minutes)
{
  if(temps)
    {
      temps->heure = minutes / 60;
      temps->minute = minutes % 60;
    }
}

void setMaj_Tem(Temps *ptr, const char b)
{
  if(ptr)
    {
      ptr->maj = b;
      if(b == 1)
	ptr->sup = !b;
    }
}

char getMaj_Tem(const Temps *ptr)
{
  if(ptr)
    return ptr->maj;
  return 0;
}

void setSup_Tem(Temps *ptr, const char b)
{
  if(ptr)
    {
      ptr->sup = b;
      if(b == 1)
	ptr->maj = !b;
    }
}

char getSup_Tem(const Temps *ptr)
{
  if(ptr)
    return ptr->sup;
  return 0;
}

void regression_Tem()
{

}

